/**
 * User: Kevin
 * Date: 2017/11/16
 * Time: 0:18
 *
 */
'use strict';
//获取应用程序
angular.module('myApp',['ui.router'])
//定义配置
.config(function ($stateProvider) {
    $stateProvider
    //首页状态
        .state('home',{
            url : '/',
            templateUrl : 'view/home.tpl',
            controller : 'homeCtrl'
        })
        // 登录页状态
        .state('login', {
            url: '/login',
            templateUrl: 'view/login.tpl',
            controller: 'loginCtrl'
        })
    //定义留个页面的状态
    //用户相关的有三个页面
        //创建用户的页面
        .state('createUser',{
            url : '/createuser',
            templateUrl : 'view/user/create.tpl',
            controller : 'createUserCtrl'
        })
        //用户列表的页面
        .state('userList',{
            url : '/userlist/:pageNum',
            templateUrl : 'view/user/list.tpl',
            controller : 'userListCtrl'
        })
    //用户详情页面
        .state('userDetail',{
            url : '/userdetail/:userId',
            templateUrl : 'view/user/detail.tpl',
            controller : 'userDetailCtrl'
        })
        //新闻相关的有三个页面
        //创建新闻的页面
        .state('createNews',{
            url : '/createnews',
            templateUrl : 'view/news/create.tpl',
            controller : 'createNewsCtrl'
        })
        //新闻列表的页面
        .state('newsList',{
            url : '/newslist/:pageNum',
            templateUrl : 'view/news/list.tpl',
            controller : 'newsListCtrl'
        })
        //新闻详情页面
        .state('newsDetail',{
            url : '/newsdetail/:newsId',
            templateUrl : 'view/news/detail.tpl',
            controller : 'newsDetailCtrl'
        })
})
    //用户创建页面控制器
    .controller('createUserCtrl',function ($scope,$http,$location) {
        $scope.goToCreateUser = function () {
            // console.log($scope.data);
            //发送请求 提交数据
            $http.post('action/createuser.php',$scope.data)
            //提交成功，跳转列表页
                .success(function (res) {
                    if(res && res.errno ===0){
                        //跳转到列表页，默认第一页
                        $location.path('/userlist/1')
                    }else{
                        alert('注册失败！！！');
                    }
                })


        }
    })
    //用户列表控制器
    .controller('userListCtrl',function ($scope,$stateParams,$http) {
        // console.log(arguments);
        $scope.num = $stateParams.pageNum;
        $http
            //获取数据
            .get('action/userlist.php',{
                params : {
                    num : $scope.num
                }
            })
        //监听返回的数据
            .success(function (res) {
                if(res && res.errno === 0 && res.data){
                    //存储数据
                    $scope.list = res.data
                }else {
                    alert('请求的数据不存在')
                }
            })
        console.log($scope);
    })
    //用户详情控制器
    .controller('userDetailCtrl',function ($scope,$stateParams,$http) {
        //根据id请求数据
        $http.get('action/userdetail.json?id='+$stateParams.userId)
        //将返回数据渲染页面
            .success(function (res) {
                if(res && res.errno === 0 &&res.data){
                    $scope.data = res.data;
                }else {
                    alert('请求失败');
                }
            })
    })


    //新闻创建页面控制器
    .controller('createNewsCtrl',function ($scope,$http,$location) {
        $scope.goToCreateNews = function () {
            // console.log($scope.data);
            //提交表单时，没有日期字段，我们适配data数据
            $scope.data.date = new Date().getTime();
            //发送请求 提交数据

            $http.post('action/createnews.php',$scope.data)
            //提交成功，跳转列表页
                .success(function (res) {
                    if(res && res.errno ===0){
                        //跳转到列表页，默认第一页
                        $location.path('/newslist/1')
                    }else{
                        alert('创建新闻失败！！！');
                    }
                })
        }
        console.log($scope);
    })
    //新闻列表控制器
    .controller('newsListCtrl',function ($scope,$stateParams,$http) {
        // console.log(arguments);
        $scope.num = $stateParams.pageNum;
        $http
        //获取数据
            .get('action/newslist.php?num='+$scope.num)
            //监听返回的数据
            .success(function (res) {
                if(res && res.errno === 0 && res.data){
                    //存储数据
                    $scope.list = res.data
                }else {
                    alert('请求的数据不存在')
                }
            })
        // console.log($scope);
    })
    //新闻详情控制器
    .controller('newsDetailCtrl',function ($scope,$stateParams,$http) {
        //根据id请求数据
        $http.get('action/newsdetail.php?id='+$stateParams.newsId)
        //将返回数据渲染页面
            .success(function (res) {
                if(res && res.errno === 0 && res.data){
                    $scope.data = res.data;
                }else {
                    alert('请求失败');
                }
            })
        // console.log($scope)
    })
    //导航条控制器
    .controller('navCtrl',function ($scope) {
        // 定义数据
        $scope.list  = [
            {
                title : '用户模块',
                childList : [
                    {
                        title : '用户列表',
                        link : '#/userlist/1'
                    },
                    {
                        title : '创建用户',
                        link : '#/createuser'
                    }
                ]
            },
            {
                title : '新闻模块',
                childList : [
                    {
                        title : '新闻列表',
                        link : '#/newslist/1'
                    },
                    {
                        title : '创建新闻',
                        link : '#/createnews'
                    }
                ]
            }

        ]
        //绑定切换导航内容事件
        $scope.toggleList = function (e) {
            //获取点击的元素
            var dom = $(e.target);
            dom.siblings().slideToggle();
        }
    })
//首页控制器
.controller('homeCtrl',function ($scope,$interval) {
    // checkLogin();
    //定义时间
    $scope.date=new Date();
    //循环定时器
    $interval(function () {
        $scope.date=new Date();
    },1000)
})
//登录页控制器
.controller('loginCtrl',function ($scope,$http,$location,$rootScope) {
    // 定义提交事件
    $scope.goToLogin = function () {
        // console.log($scope.data);
        $http
            .post('action/login.php',$scope.data)
            .success(function (res) {
                // console.log(res);
                //判断请求成功返回数据
                if(res&&res.errno === 0){

                    // 保存数据
                    $rootScope.$emit('username',res.data.username);
                    // 跳转页面
                    $location.path('/')
                }else{

                }
            })
        
    }
})
    // //封装检测用户登录的服务
    // .factory('checkLogin',function ($rootScope,$location) {
    //     return function () {
    //         //检测根作用域室友username
    //         if($rootScope.username === undefined){
    //             //没有登录跳转到登录页
    //             $location.path('/login')
    //         }
    //     }
    // })

//检测根作用域是否登录
.run(function ($rootScope,$http,$location) {
    // 监听传送的消息
    $rootScope.$on('username',function (obj,username) {
        // console.log(arguments);
        $rootScope.username = username;
    });
    // 检测是否登录
    $http
        .get('action/checkLogin.php')
        .success(function (res) {
            // 检测是否有data数据
            // 有data数据说明登录了
        if(res && res.errno === 0  && res.data){
            // 登录成功进入首页
            $rootScope.username = res.data.username;
            $location.path('/');
        }else {
            // 进入登录页
            $location.path('/login');
        }
    })
    // 在路由时间中检测登录，就不需要在每个页面中检测
    $rootScope.$on('$stateChangeSuccess',function () {
        if($rootScope.username === undefined){
            //没有登录跳转到登录页
            $location.path('/login')
        }
    })
})